
package team.jmu.bean;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.LockMode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 * A data access object (DAO) providing persistence and search support for TAlreadybuyGoods
 * entities.
 * Transaction control of the save(), update() and delete() operations
 * can directly support Spring container-managed transactions or they can be augmented to handle
 * user-managed Spring transactions.
 * Each of these methods provides additional information for how to configure it for the desired
 * type of transaction control.
 * 
 * @see team.jmu.bean.TAlreadybuyGoods
 * @author MyEclipse Persistence Tools
 */
public class TAlreadybuyGoodsDAO extends HibernateDaoSupport
{
	private static final Logger log = LoggerFactory
			.getLogger( TAlreadybuyGoodsDAO.class );
	// property constants
	public static final String NUMBER = "number";
	public static final String COMMENT = "comment";
	public static final String PRICE = "price";

	protected void initDao()
	{
		// do nothing
	}

	public void save( TAlreadybuyGoods transientInstance )
	{
		log.debug( "saving TAlreadybuyGoods instance" );
		try
		{
			getHibernateTemplate().save( transientInstance );
			log.debug( "save successful" );
		} catch( RuntimeException re )
		{
			log.error( "save failed", re );
			throw re;
		}
	}

	public void delete( TAlreadybuyGoods persistentInstance )
	{
		log.debug( "deleting TAlreadybuyGoods instance" );
		try
		{
			getHibernateTemplate().delete( persistentInstance );
			log.debug( "delete successful" );
		} catch( RuntimeException re )
		{
			log.error( "delete failed", re );
			throw re;
		}
	}

	public TAlreadybuyGoods findById( team.jmu.bean.TAlreadybuyGoodsId id )
	{
		log.debug( "getting TAlreadybuyGoods instance with id: " + id );
		try
		{
			TAlreadybuyGoods instance = (TAlreadybuyGoods)getHibernateTemplate()
					.get( "team.jmu.bean.TAlreadybuyGoods", id );
			return instance;
		} catch( RuntimeException re )
		{
			log.error( "get failed", re );
			throw re;
		}
	}

	public List findByExample( TAlreadybuyGoods instance )
	{
		log.debug( "finding TAlreadybuyGoods instance by example" );
		try
		{
			List results = getHibernateTemplate().findByExample( instance );
			log.debug( "find by example successful, result size: "
					+ results.size() );
			return results;
		} catch( RuntimeException re )
		{
			log.error( "find by example failed", re );
			throw re;
		}
	}

	public List findByProperty( String propertyName, Object value )
	{
		log.debug( "finding TAlreadybuyGoods instance with property: "
				+ propertyName + ", value: " + value );
		try
		{
			String queryString = "from TAlreadybuyGoods as model where model."
					+ propertyName + "= ?";
			return getHibernateTemplate().find( queryString, value );
		} catch( RuntimeException re )
		{
			log.error( "find by property name failed", re );
			throw re;
		}
	}

	public List findByNumber( Object number )
	{
		return findByProperty( NUMBER, number );
	}

	public List findByComment( Object comment )
	{
		return findByProperty( COMMENT, comment );
	}

	public List findByPrice( Object price )
	{
		return findByProperty( PRICE, price );
	}

	public List findAll()
	{
		log.debug( "finding all TAlreadybuyGoods instances" );
		try
		{
			String queryString = "from TAlreadybuyGoods";
			return getHibernateTemplate().find( queryString );
		} catch( RuntimeException re )
		{
			log.error( "find all failed", re );
			throw re;
		}
	}

	public TAlreadybuyGoods merge( TAlreadybuyGoods detachedInstance )
	{
		log.debug( "merging TAlreadybuyGoods instance" );
		try
		{
			TAlreadybuyGoods result = (TAlreadybuyGoods)getHibernateTemplate()
					.merge( detachedInstance );
			log.debug( "merge successful" );
			return result;
		} catch( RuntimeException re )
		{
			log.error( "merge failed", re );
			throw re;
		}
	}

	public void attachDirty( TAlreadybuyGoods instance )
	{
		log.debug( "attaching dirty TAlreadybuyGoods instance" );
		try
		{
			getHibernateTemplate().saveOrUpdate( instance );
			log.debug( "attach successful" );
		} catch( RuntimeException re )
		{
			log.error( "attach failed", re );
			throw re;
		}
	}

	public void attachClean( TAlreadybuyGoods instance )
	{
		log.debug( "attaching clean TAlreadybuyGoods instance" );
		try
		{
			getHibernateTemplate().lock( instance, LockMode.NONE );
			log.debug( "attach successful" );
		} catch( RuntimeException re )
		{
			log.error( "attach failed", re );
			throw re;
		}
	}

	public static TAlreadybuyGoodsDAO getFromApplicationContext(
			ApplicationContext ctx )
	{
		return (TAlreadybuyGoodsDAO)ctx.getBean( "TAlreadybuyGoodsDAO" );
	}

	public List<TAlreadybuyGoods> findByAid( String aid )
	{

		List<TAlreadybuyGoods> list = findAll();
		List<TAlreadybuyGoods> result = new ArrayList<TAlreadybuyGoods>();
		for( TAlreadybuyGoods alreadybuyGoods : list )
		{
			if( alreadybuyGoods.getId().getAid().equals( aid ) )
			{
				result.add( alreadybuyGoods );
			}
		}
		return result;
	}
}